function Particle() {
  
  this.type;
  
  this.x;
  this.y;
  
  this.vX;
  this.vY;
  
  this.minAx;
  this.maxAx;
  this.minAy;
  this.maxAy;
  
  this.life;
  
  this.init = function(type, emitterX, emitterY, initMinVx, initMaxVx, initMinVy, initMaxVy, initMinAx, initMaxAx, initMinAy, initMaxAy, lifeMin, lifeMax) {
    this.type = type;
    
    this.x = emitterX;
    this.y = emitterY;
    
    this.vX = initMinVx + ((initMaxVx - initMinVx) * Math.random());
    this.vY = initMinVy + ((initMaxVy - initMinVy) * Math.random());
    
    this.minAx = initMinAx;
    this.maxAx = initMaxAx;
    this.minAy = initMinAy;
    this.maxAy = initMaxAy;
    
    this.life = rand(lifeMin, lifeMax);
    
  };
  
  this.draw = function(particleId) {
    
    this.x += this.vX;
    this.y += this.vY;
    this.life--;
    
    if(this.life % 5 == 0) {
      this.vX += this.minAx + ((this.maxAx - this.minAx) * Math.random());
      this.vY += this.minAy + ((this.maxAy - this.minAy) * Math.random());
    }
    
    // implement particle types here:
    if(this.type == 1) {
      var opacity = setInRange(this.life / 3.0, 0.0, 1.0);
      c.globalAlpha = opacity;
      img.drawSprite("leaves", Math.round(this.x - 6), Math.round(this.y - 6), 12, 12, (particleId % 10), Math.floor(4.99 - (hero.water / hero.MAX_WATER) * 4.8));
      c.globalAlpha = 1;
    
    } else if(this.type == 2) {
      var opacity = setInRange(this.life / 3.0, 0.0, 1.0);
      c.globalAlpha = opacity;
      img.drawSprite("needles", Math.round(this.x - 6), Math.round(this.y - 6), 14, 14, (particleId % 10), 0);
      c.globalAlpha = 1;
    
    } else if(this.type == 3) {
      var opacity = 1;
      var imgDimension = {width: 40, height: 20};
      var spriteCoords = {x: 0, y: Math.floor(hero.statusIcon/2)};
      c.globalAlpha = opacity;
      
      img.drawSprite("statPart", Math.round(this.x), Math.round(this.y), imgDimension.width, imgDimension.height, spriteCoords.x, spriteCoords.y);
      
      c.globalAlpha = 1;
    }
  };
  
}